자바스크립트 객체 더하기 연산의 타입 변환 규칙

Source

  • Evernote/IFTTT Feedly/자바스크립트 {} + {} 결과는.md

Summary

자바스크립트에서 {} + {}와 같은 객체 더하기 연산 시 발생하는 타입 변환 과정을 설명합니다. ECMAScript 5.1 규정에 따라 + 연산자는 피연산자를 기본형(Primitive)으로 변환한 후, 숫자 또는 문자열로 변환하여 결과를 도출합니다. 객체는 ToPrimitive 알고리즘을 통해 valueOf() 또는 toString() 메서드를 호출하여 기본형 값을 추출하며, 이 과정에서 반환된 값의 타입에 따라 최종 연산 결과가 달라집니다.

Key Points

  • 자바스크립트 값은 기본형(undefined, null, boolean, number, string)과 객체(object, array, function)로 구분됩니다.
  • + 연산자 실행 시 내부적으로 ToPrimitive, ToNumber, ToString 함수가 호출되어 타입 변환이 일어납니다.
  • 객체의 기본형 변환(ToPrimitive)은 먼저 valueOf()를 호출하고, 결과가 기본형이 아니면 toString()을 호출합니다.
  • 변환된 기본형 값이 숫자면 ToNumber(), 문자열이면 ToString()을 적용하여 최종 연산 결과를 계산합니다.
  • 문서는 valueOftoString이 모두 객체를 반환하는 예외 케이스를 통해 TypeError 발생 및 변환 순서를 검증합니다.